/*=============================================================================

  APPLICATION MANAGER MODULE

  FILE: UImgr.cpp
  
  DESCRIPTION

    Manager Module Definition

  EXTERNALIZED FUNCTIONS

    
  Copyright (c) DaeSung Engineering Inc. All rights reserved.

=============================================================================*/
/*=============================================================================

                             EDIT HISTORY

  ---------  -------  -------------------------------------------------------
    when       who     what, where, why
  ---------  -------  -------------------------------------------------------
   06/28/03   nso4th   Version 0.1

=============================================================================*/

/*=============================================================================
  HEADER INCLUSION
=============================================================================*/
#include <UImgr_MOD.h>
#include "dlgEng.h"

/*=============================================================================
  STRUCTURE DEFINITION
=============================================================================*/

/*=============================================================================
  DEV INIT TABLE DEFINITION
=============================================================================*/

/*=============================================================================
  EXTERNALIZED FUNCTION DEFINITION
=============================================================================*/
boolean sysmgr_event_proc(dword event, dword wp, dword lp)
{
	SYSmgr			*sm = (SYSmgr*)ObjList_Get(SYS_MGR);
	CMainView		*vw = (CMainView*)ObjList_Get(VIEW_MAIN);
	CDlgEng			*de = (CDlgEng*)ObjList_Get(VIEW_ENG);
	Vmanual			*vman;
	dword			evt, evt_id;

	evt = HDEV_GETEVENT(event);
	evt_id = HDEV_GETDEV_ID(event);

	vman = &vw->m_vManual;
	vman->Event_Handler(SYS_MGR, event, wp, lp);
	
	switch(event)
	{
	case SYSTEM_ERR_E: // wp = "const char*"
	{
		NBOX_REQ((const char*)wp, (const char*)lp, 3);
		UIapp_SlideText((char*)lp, GC_RED);
		break;
	}
	case SYSTEM_NOTI_E: // wp = "const char*"
	{
		NBOX_REQ((const char*)wp, (const char*)lp, 3);
		UIapp_SlideText((char*)lp, GC_GREEN);
		break;
	}
	}
		
	return	FALSE;
}

//---------------------------------------------------------
// IOmgr
//---------------------------------------------------------
boolean iomgr_event_proc(dword event, dword wp, dword lp)
{
	CMainView		*vw = (CMainView*)ObjList_Get(VIEW_MAIN);
	CFormCtrl		*fc = &vw->m_frmCtrl;
	HIOvw			*io = (HIOvw*)ObjList_Get(VIEW_IODEV);
	dword			evt, evtID;
	dword			modID, ch_offset;
	dword			new_val, old_val;
	int32			j;
	
	evt = HDEV_GETEVENT(event);
	evtID = HDEV_GETDEV_ID(event);
	
	if(vw == NULL)
		return	FALSE;


	// HIOvw
	if(io == NULL)
		return	FALSE;

	switch(evt)
	{
	// INPUT
	case IOmgr_IN_MOD0_E: 
	case IOmgr_IN_MOD1_E:
	case IOmgr_IN_MOD2_E:
	case IOmgr_IN_MOD3_E:
	{
		modID = evt - IOmgr_IN_MOD0_E;
		ch_offset = modID*32;
		new_val = wp;
		old_val = lp;
		for(j=0; j<32; j++)
		{
			if(ISINVERSE(new_val, old_val, j))
			{
				io->Input_Set((j+ch_offset), ISON(new_val, j));
				if(ISON(new_val, j))
				{
					fc->m_gLTxt[j].SetLedColor(GLED_GREEN);
				}
				else
				{
					fc->m_gLTxt[j].SetLedColor(GLED_GRAY);
				}
			}
		}
		break;
	}
	// OUTPUT
	case IOmgr_OUT_MOD0_E:
	case IOmgr_OUT_MOD1_E:
	case IOmgr_OUT_MOD2_E:
	case IOmgr_OUT_MOD3_E:
	{
		modID = evt - IOmgr_OUT_MOD0_E;
		ch_offset = modID*32;
		new_val = wp;
		old_val = lp;
		for(j=0; j<32; j++)
		{
			if(ISINVERSE(new_val, old_val, j))
			{
				io->Output_Set((j+ch_offset), ISON(new_val, j));
			}
		}
		break;
	}
	// SPECIAL EVENT
	case IOmgr_RESET_E: // wp = TRUE(LONG), FALSE(SHORT)
	{
		if((boolean)wp == FALSE)
		{
			UIapp_RESETSHORT();
		}
		else
		{
			UIapp_RESETLONG();
		}
		return	TRUE;
	}
	}
	
	return	FALSE;
}

/*--- END OF UImgr_mgr.CPP ---*/
